/* eslint-disable @typescript-eslint/no-var-requires */
const packageName = require('./package.json').name
const path = require('path')
const proxy = require('./vue.config.proxy')

function resolve(dir) {
  let result = path.join(__dirname, dir)
  return result
}

module.exports = {
  publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
  productionSourceMap: false,
  devServer: {
    headers: {
      'Access-Control-Allow-Origin': '*',
    },
    port: '8020',
    host: "127.0.0.1",//192.168.2.105  127.0.0.1
    proxy,
    open:true//自动重启
  },
  // 关闭 eslint 保存检查代码
  lintOnSave: false,
  configureWebpack: {
    name: packageName,
    output: {
      // 微应用的包名，这里与主应用中注册的微应用名称一致
      library: `${packageName}-[name]`,
      // 将你的 library 暴露为所有的模块定义下都可运行的方式
      libraryTarget: 'umd',
      // 按需加载相关，设置为 webpackJsonp_project 即可
      jsonpFunction: `webpackJsonp_${packageName}`,
    }
  },
  chainWebpack: (config) => {
    // config.resolve.alias
    //   .set('@', path.join(__dirname, 'src'))
    config.extensions = ['.js', '.vue', '.json', '.ts', '.tsx']
    // const svgRule = config.module.rule('svg')
    // // 清除已有的所有 loader。
    // // 如果你不这样做，接下来的 loader 会附加在该规则现有的 loader 之后。
    // svgRule.uses.clear()
    // // 添加要替换的 loader
    // svgRule
    //   .test(/\.svg$/)
    //   .include.add(resolve('/src/icons'))
    //   .end()
    //   .use('svg-sprite-loader')
    //   .loader('svg-sprite-loader')
    //   .options({
    //     symbolId: 'icon-[name]',
    //     enforce: 'pre',
    //     include: /src\/icons/, // 只处理 src/components/icons 目录下的 SVG 文件
    //     exclude: /node_modules/ // 排除 node_modules 目录下的文件
    //   })

    config.module
      .rule('bpmn')
      .test(/\.bpmn$/)
      .use('raw-loader')
      .loader('raw-loader')
      .end();

    config.plugin("copy").tap(args => {
      args[0] = args[0].concat([{
        from: path.resolve(__dirname, './node_modules/bpmn-js/dist/assets'),
        to: path.resolve(__dirname, './dist/vendor/bpmn-js/assets'),
      }, {
        from: path.resolve('./node_modules/bpmn-js-properties-panel/dist/assets'),
        to: path.resolve(__dirname, './dist/vendor/bpmn-js-properties-panel/assets'),
      }])
      return args;
    })
  },
  css: {
    loaderOptions: {
      sass: {
        prependData: `@import '~@/assets/styles/global.scss';`
      }
    }
  }
}
